1. Field of the Invention
This invention relates in general to computer systems, and more particularly, to task switching.
2. Description of Related Art
Multitasking operating systems virtualize the use of the processor by maintaining the architectural state for each task. This process is typically carried out by saving the architectural state of the outgoing task from the processor to operating system data structures in memory and restoring the saved architectural state of the incoming task from the OS data structures into the processor. When a processor has other internal processing elements (e.g., floating point unit), the architectural state of these processing elements corresponding to each task needs to be maintained also.
On uniprocessor systems, the process of saving or restoring the architectural state of the floating-point unit (FPU) is traditionally performed in a lazy fashion. When a task that does not xe2x80x9cownxe2x80x9d the FPU executes a floating-point (FP) instruction, a Device Not Available (DNA) exception is raised. When the DNA exception is raised, the operating system (OS) has to set some state for the outgoing and incoming tasks; for the outgoing task so that the next time it executes a FP instruction, it will generate a DNA and for the incoming task so that the next FP instruction does not generate a DNA exception. The DNA exception handler saves the FP state of the task owning the FPU to the corresponding OS data structure and restores the FP state of the incoming task, from the structure in which its state had previously been saved. On multiprocessor systems, typically the FP state of a task being context switched out is saved by the OS.
When the processor or its internal FPU is updated with extended capabilities, the traditional exception handler used by the OS may not be able to access the extended state of the processor or the FPU. To accommodate these updates, the OS has to be redesigned, requiring significant modifications to the OS internal data structures and exception handlers. This leads to significant development and validation effort in the OS, resulting in long turn-around time for introduction of an OS that is compatible with the extended capabilities of the processor and/or its FPU.
Accordingly, there is a need in the technology for providing a cost-effective and efficient method for handling task switching involving extended states, without having to modify the operating system.
The present invention is a method and apparatus for switching first and second tasks in an operating system. The first and second tasks each have first and second traditional states and first and second extended states, in a processing unit. The method comprises: (a) saving the first traditional and extended states from the processing unit to a buffer; (b) updating the buffer by replacing the first extended state by the second extended state; and (c) restoring the first traditional state and the second extended state in the processing unit from the updated buffer.